/*
 * ModeloRepresentacionBase.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 21/04/2011, 08:23:38 AM
 */

package com.ufps.cuatro.util.base;

import java.util.ArrayList;
import java.util.StringTokenizer;

import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.generadores.GeneradorComponentes;

/**
 * <i><b>ModeloRepresentacionBase:</b></i>
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 21/04/2011
 * @see ObjectBase
 */
public class ModeloRepresentacionBase extends ObjectBase{
    private static final long serialVersionUID = -9104930281082982778L;
    
    private String strNombre;
    private String strComponentesSet;
    private String strComponentesGet;
    private String strToolTips;

    /**
     * 
     * @param id @DescripcionParametro
     * @param strNombre @DescripcionParametro
     * @param strComponentesSet @DescripcionParametro
     * @param strComponentesGet @DescripcionParametro
     * @param strToolTips @DescripcionParametro
     */
    public ModeloRepresentacionBase(int id, String strNombre, String strComponentesSet, String strComponentesGet, String strToolTips) {
        super(id);
        this.strNombre = strNombre;
        this.strComponentesSet = strComponentesSet;
        this.strComponentesGet = strComponentesGet;
        this.strToolTips = strToolTips;
    }

    /**
     * 
     * @return @DefinicionReturn
     */
    public String getStrComponentesGet() {
        return strComponentesGet;
    }

    /**
     * 
     * @param strComponentesGet @DescripcionParametro
     */
    public void setStrComponentesGet(String strComponentesGet) {
        this.strComponentesGet = strComponentesGet;
    }

    /**
     * 
     * @return @DefinicionReturn
     */
    public String getStrComponentesSet() {
        return strComponentesSet;
    }

    /**
     * 
     * @param strComponentesSet @DescripcionParametro
     */
    public void setStrComponentesSet(String strComponentesSet) {
        this.strComponentesSet = strComponentesSet;
    }

    /**
     * Devuelve el nombre
     * @return @DefinicionReturn
     */
    public String getStrNombre() {
        return strNombre;
    }

    /**
     * Establece el nombre
     * @param strNombre @DescripcionParametro
     */
    public void setStrNombre(String strNombre) {
        this.strNombre = strNombre;
    }

    /**
     * Devuelve el mensaje de ayuda asociado a la clase
     * @return @DefinicionReturn
     */
    public String getStrToolTips() {
        return strToolTips;
    }

    /**
     * Establece el mensaje de ayuda asociado a la clase
     * @param strToolTips @DescripcionParametro
     */
    public void setStrToolTips(String strToolTips) {
        this.strToolTips = strToolTips;
    }
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public String getStrComponentes(){
        return this.strComponentesGet + ", " + this.strComponentesSet;
    }
    
    /**
     * @DefinicionMetodo
     * @param modo @DefinicionParametro
     * @return @DefinicionReturn
     */
    public ArrayList<ComponenteBaseStandar> getRepresentacionComponentesBase(int modo){
      try{
        ArrayList<ComponenteBaseStandar> objComponentes = new ArrayList<ComponenteBaseStandar>();
        switch(modo){
            case Utileria.GET:
                objComponentes = this.getRepresentacionComponentesBase(strComponentesGet);
                break;
            case Utileria.SET:
                objComponentes = this.getRepresentacionComponentesBase(strComponentesGet);
                break;
            case Utileria.ALL:
                objComponentes = this.getRepresentacionComponentesBase(strComponentesGet + ", " + strComponentesSet);
                break;
        }
        return objComponentes;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param strTokenComponentes @DefinicionParametro
     * @return @DefinicionReturn
     */
    public ArrayList<ComponenteBaseStandar> getRepresentacionComponentesBase(String strTokenComponentes){
      try{
        ArrayList<ComponenteBaseStandar> objComponentes = new ArrayList<ComponenteBaseStandar>();
        StringTokenizer objToken = new StringTokenizer(strTokenComponentes, ", ");
        while(objToken.hasMoreTokens()){
            String strIdToken = objToken.nextToken();
            int idComponente = Integer.parseInt(strIdToken);
            ComponenteBaseStandar objComponente = GeneradorComponentes.devolverComponenteBasePorId(idComponente);
            objComponentes.add(objComponente);
        }
        return objComponentes;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    

    @Override
    public String toString() {
       try{
        return strNombre;
        }catch(java.lang.NullPointerException ex){}
       return"";
    }    

    @Override
    public int compareTo(Object o) {
       try{
        ModeloRepresentacionBase obj = (ModeloRepresentacionBase) o;
        if(this.id > obj.id) {
            return 1;
        }
        else if(this.id < obj.id) {
            return -1;
        }
        else {
            return 0;
        }
    }catch(java.lang.NullPointerException ex){}
       return 0;
    }

}
